import {
  constantRoutes,
  asyncRoutes
} from "@/router"

const state = {
  // 用这个属性保存所有的路由表(静态+动态)
  // 放到vuex里可以满足多个地方要用
  // 因为不管你是什么账号哦，默认都可以访问静态路由，所以把静态路路由直接作为默认值
  routes: constantRoutes
}

const mutations = {

  setRoutes(state, newRoutes) {
    // 把传进来新的路由加上静态路由一起合并成一个新数组
    // 那么这个新数组既所有静态路由也有传入的值
    state.routes = [...constantRoutes, ...newRoutes]
  }

}

const actions = {
  getAsyncRoutes(context, menus) {
    // 根据所有的动态路由过滤出来的
    let routes = asyncRoutes.filter(item => menus.includes(item.name))
    routes.push({
      path: '*',
      redirect: '/404',
      hidden: true
    })
    context.commit('setRoutes', routes)
    return routes
  }
}



export default {
  namespaced: true,
  state,
  mutations,
  actions
}
